/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ares.service.action;

import com.ares.service.bean.BeanPeriodo;
import com.ares.service.bean.BeanUserSub;
import com.ares.service.bean.BeanUsuario;
import com.ares.service.servicio.EvaluacionSapService_I;
import com.ares.service.servicio.PaqueteBusinessDelegate;
import com.ares.service.servicio.UsuarioSapService_I;
import com.ares.service.util.Constantes;
import com.ares.service.util.Util;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class UsuarioAction extends DispatchAction {
    UsuarioSapService_I UsuarioSubor = PaqueteBusinessDelegate.getUsuarioSapService_I();
    //SqlComboOpcionesService_I Opciones = PaqueteBusinessDelegate.getSqlComboOpcionesService();
    EvaluacionSapService_I evaluacionService = PaqueteBusinessDelegate.getEvaluacionSapService_I();
    BeanPeriodo beanPeriodo = new BeanPeriodo();
    String periodoEvaluacion = "";

    public ActionForward cargarjsp(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
            HttpSession session = request.getSession();
            BeanUsuario usuario = (BeanUsuario) session.getAttribute("session_usuario");
            if (Util.isSessionActiva(request)) {
                return mapping.findForward(Constantes.LOGIN);
            }
            
            //Pregunto si es que existen 2 periodos abiertos            
            if(session.getAttribute("periodoEvaluacion") == null){
                beanPeriodo = evaluacionService.validarPeriodosEmpleado();
                if (beanPeriodo.getResultado().equals("1") && request.getParameter("anio") == null) {//Tiene dos evaluaciones
                    request.setAttribute("anioActual", beanPeriodo.getAnioActual());
                    request.setAttribute("anioAnterior", beanPeriodo.getAnioAnterior());
                    //return mapping.findForward("fPeriodos");
                    System.out.println("*************************Reenvio al dPeriodos");
                    return mapping.findForward("dPeriodos");
                }
                else{
                    if(beanPeriodo.getResultado().equals("4")){
                        Calendar calendario = Calendar.getInstance();
                        periodoEvaluacion = String.valueOf(calendario.get(Calendar.YEAR));
                    }
                    else{
                        if(beanPeriodo.getResultado().equals("2") || (request.getParameter("anio") != null && request.getParameter("anio").equals("2")) ){
                            periodoEvaluacion = beanPeriodo.getAnioActual();
                            System.out.println("Muestra evaluacion anio actual: " + beanPeriodo.getAnioActual());
//                             request.getParameter("anio").equals("2")
                        }
                        else{
                            if(beanPeriodo.getResultado().equals("3") || (request.getParameter("anio") != null && request.getParameter("anio").equals("3")) ){// || request.getParameter("anio").equals("3")){//Tiene evaluacion anterior
                                periodoEvaluacion = beanPeriodo.getAnioAnterior();
                                System.out.println("debo mostrar la evaluacion anterior: " + beanPeriodo.getAnioAnterior());
                            }
                        }
                    }
                }
            }
            System.out.println("Mi Equipo de Objetivos");
//            Subordinados Directos
            List<BeanUserSub> lstUsuario = UsuarioSubor.getLstUsuarioSubor1(usuario.getStrId_Posicion(), periodoEvaluacion);
            request.setAttribute("lstUsuario", lstUsuario);
//            Subordinados Funcionales
            System.out.println("usuario.getStrId_Posicion: " + usuario.getStrId_Posicion());
            List<BeanUserSub> lstUsuarioFuncionales = UsuarioSubor.getLstUsuarioSuborFuncionales(usuario.getStrId_Posicion(), periodoEvaluacion);
            request.setAttribute("lstUsuarioFuncionales", lstUsuarioFuncionales);
            
            session.setAttribute("periodoEvaluacion", periodoEvaluacion);
            return mapping.findForward("load");            
    }

    public ActionForward cargarListaCompetencia(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
            HttpSession session = request.getSession();
            BeanUsuario usuario = (BeanUsuario) session.getAttribute("session_usuario");
            if (Util.isSessionActiva(request)) {
                return mapping.findForward(Constantes.LOGIN);
            }

            beanPeriodo = evaluacionService.validarPeriodosEmpleado();

            if(beanPeriodo.getResultado().equals("4") || beanPeriodo.getResultado().equals("2")){
                Calendar calendario = Calendar.getInstance();
                periodoEvaluacion = String.valueOf(calendario.get(Calendar.YEAR));
            }
            else{//Si tiene periodo actual o tiene dos periodos
                periodoEvaluacion =  beanPeriodo.getAnioAnterior();
            }

//          Subordinados Directos
            List<BeanUserSub> lstUsuario = UsuarioSubor.getLstUsuarioSubor1(usuario.getStrId_Posicion(), periodoEvaluacion);
            
//          Subordinados Funcionales
            List<BeanUserSub> lstUsuarioFuncionales = UsuarioSubor.getLstUsuarioSuborFuncionales(usuario.getStrId_Posicion(), periodoEvaluacion);
            request.setAttribute("lstUsuarioFuncionales", lstUsuarioFuncionales);

            request.setAttribute("lstUsuario", lstUsuario);
            return mapping.findForward("loadCompetencias");
    }

    public ActionForward buscarEmpleado(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
            String apellido = "";
            int presionoBuscar = 1;
            apellido = request.getParameter("campo");
            System.out.println("el apellido es: " + apellido);
            List<BeanUserSub> lstUser = null;
            if(!apellido.equals("")){
                lstUser = new ArrayList<BeanUserSub>();
                BeanUserSub user = new BeanUserSub();
                user.setStrNombreComp("DANIEL ABELARDO ALOR GARATE");
                user.setStrIdEmpleado("01008780");
                user.setStrDescrip_Idp("ANALISTA DE SEGURIDAD DE LA INFORMACION");
                lstUser.add(user);
                BeanUserSub user1 = new BeanUserSub();
                user1.setStrNombreComp("ROBY VILCA ALOR");
                user1.setStrIdEmpleado("01008540");
                user1.setStrDescrip_Idp("ANALISTA DE CONTROL DE CALIDAD TI");
                lstUser.add(user1);
            }
            
        request.setAttribute("lstUser", lstUser);
        request.setAttribute("campo", apellido);
        request.setAttribute("presionoBuscar", presionoBuscar);
        return mapping.findForward("formBusqueda");
    }
}